package ve.usb.crm.hibernate;

import ve.usb.cohesion.runtime.LocalDate;import java.util.HashSet;
import java.util.Set;

public class Contacto implements java.io.Serializable, ve.usb.cohesion.runtime.Auditable {

    /** Creates a new instance of Contacto */
    public Contacto() {}
    
    /**
     * Holds value of property id.
     */
    private Long id;

    /**
     * Getter for property id.
     * @return Value of property id.
     */
    public Long getId() {
        return this.id;
    }

    /**
     * Holds value of property idContacto.
     */
    private long idContacto;

    /**
     * Getter for property idContacto.
     * @return Value of property idContacto.
     */
    public long getIdContacto() {
        return this.idContacto;
    }

    /**
     * Setter for property idContacto.
     * @param idContacto New value of property idContacto.
     */
    public void setIdContacto(long idContacto) {
        this.id = this.idContacto = idContacto;
    }

    /**
     * Holds value of property cuenta.
     */
    private Cuenta cuenta;

    /**
     * Getter for property cuenta.
     * @return Value of property cuenta.
     */
    public Cuenta getCuenta() {
        return this.cuenta;
    }

    /**
     * Setter for property cuenta.
     * @param cuenta New value of property cuenta.
     */
    public void setCuenta(Cuenta cuenta) {
        this.cuenta = cuenta;
    }
    /**
     * Holds value of property oportunidades.
     */
    private Set<ContactoOportunidad> oportunidades = new HashSet<ContactoOportunidad>();

    /**
     * Getter for property oportunidades.
     * @return Value of property oportunidades.
     */
    public Set<ContactoOportunidad> getOportunidades() {
        return this.oportunidades;
    }

    /**
     * Setter for property oportunidades.
     * @param oportunidades New value of property oportunidades.
     */
    public void setOportunidades(Set<ContactoOportunidad> oportunidades) {
        this.oportunidades = oportunidades;
    }

    /**
     * Add an element to set property oportunidades
     * and sets elements's property contacto.
     * @param element New element to be added to oportunidades.
     */
    public void addToOportunidades(ContactoOportunidad element) {
        element.setContacto(this);
        oportunidades.add(element);
    }

    /**
     * Removes and old element from set oportunidades
     * and sets element's property contacto to null.
     * @param old The element to be removed from oportunidades
     */
    public void removeFromOportunidades(ContactoOportunidad old) {
        oportunidades.remove(old);
        old.setContacto(null);
    }
    /**
     * Holds value of property nombre.
     */
    private String nombre = "";

    /**
     * Getter for property nombre.
     * @return Value of property nombre.
     */
    public String getNombre() {
        return this.nombre;
    }

    /**
     * Setter for property nombre.
     * @param nombre New value of property nombre.
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Holds value of property apellido.
     */
    private String apellido = "";

    /**
     * Getter for property apellido.
     * @return Value of property apellido.
     */
    public String getApellido() {
        return this.apellido;
    }

    /**
     * Setter for property apellido.
     * @param apellido New value of property apellido.
     */
    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    /**
     * Holds value of property correoE.
     */
    private String correoE = "";

    /**
     * Getter for property correoE.
     * @return Value of property correoE.
     */
    public String getCorreoE() {
        return this.correoE;
    }

    /**
     * Setter for property correoE.
     * @param correoE New value of property correoE.
     */
    public void setCorreoE(String correoE) {
        this.correoE = correoE;
    }

    /**
     * Holds value of property direccionCorreo.
     */
    private String direccionCorreo = "";

    /**
     * Getter for property direccionCorreo.
     * @return Value of property direccionCorreo.
     */
    public String getDireccionCorreo() {
        return this.direccionCorreo;
    }

    /**
     * Setter for property direccionCorreo.
     * @param direccionCorreo New value of property direccionCorreo.
     */
    public void setDireccionCorreo(String direccionCorreo) {
        this.direccionCorreo = direccionCorreo;
    }

    /**
     * Holds value of property direccion.
     */
    private String direccion = "";

    /**
     * Getter for property direccion.
     * @return Value of property direccion.
     */
    public String getDireccion() {
        return this.direccion;
    }

    /**
     * Setter for property direccion.
     * @param direccion New value of property direccion.
     */
    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    /**
     * Holds value of property telefonoHabitacion.
     */
    private String telefonoHabitacion = "";

    /**
     * Getter for property telefonoHabitacion.
     * @return Value of property telefonoHabitacion.
     */
    public String getTelefonoHabitacion() {
        return this.telefonoHabitacion;
    }

    /**
     * Setter for property telefonoHabitacion.
     * @param telefonoHabitacion New value of property telefonoHabitacion.
     */
    public void setTelefonoHabitacion(String telefonoHabitacion) {
        this.telefonoHabitacion = telefonoHabitacion;
    }

    /**
     * Holds value of property telefonoMovil.
     */
    private String telefonoMovil = "";

    /**
     * Getter for property telefonoMovil.
     * @return Value of property telefonoMovil.
     */
    public String getTelefonoMovil() {
        return this.telefonoMovil;
    }

    /**
     * Setter for property telefonoMovil.
     * @param telefonoMovil New value of property telefonoMovil.
     */
    public void setTelefonoMovil(String telefonoMovil) {
        this.telefonoMovil = telefonoMovil;
    }

    /**
     * Holds value of property telefonoFax.
     */
    private String telefonoFax = "";

    /**
     * Getter for property telefonoFax.
     * @return Value of property telefonoFax.
     */
    public String getTelefonoFax() {
        return this.telefonoFax;
    }

    /**
     * Setter for property telefonoFax.
     * @param telefonoFax New value of property telefonoFax.
     */
    public void setTelefonoFax(String telefonoFax) {
        this.telefonoFax = telefonoFax;
    }

    /**
     * Holds value of property fechaNacimiento.
     */
    private java.util.Date fechaNacimiento;

    /**
     * Getter for property fechaNacimiento.
     * @return Value of property fechaNacimiento.
     */
    public java.util.Date getFechaNacimiento() {
        return this.fechaNacimiento;
    }

    /**
     * Setter for property fechaNacimiento.
     * @param fechaNacimiento New value of property fechaNacimiento.
     */
    public void setFechaNacimiento(java.util.Date fechaNacimiento) {
        if (fechaNacimiento==null || fechaNacimiento instanceof LocalDate)
            this.fechaNacimiento = fechaNacimiento;
        else this.fechaNacimiento = new LocalDate(fechaNacimiento);
    }

    /**
     * Holds value of property lugarNacimiento.
     */
    private String lugarNacimiento = "";

    /**
     * Getter for property lugarNacimiento.
     * @return Value of property lugarNacimiento.
     */
    public String getLugarNacimiento() {
        return this.lugarNacimiento;
    }

    /**
     * Setter for property lugarNacimiento.
     * @param lugarNacimiento New value of property lugarNacimiento.
     */
    public void setLugarNacimiento(String lugarNacimiento) {
        this.lugarNacimiento = lugarNacimiento;
    }

    /**
     * Holds value of property esCliente.
     */
    private boolean esCliente;

    /**
     * Getter for property esCliente.
     * @return Value of property esCliente.
     */
    public boolean getEsCliente() {
        return this.esCliente;
    }

    /**
     * Setter for property esCliente.
     * @param esCliente New value of property esCliente.
     */
    public void setEsCliente(boolean esCliente) {
        this.esCliente = esCliente;
    }

    /**
     * Holds value of property persona.
     */
    private Personal persona;

    /**
     * Getter for property persona.
     * @return Value of property persona.
     */
    public Personal getPersona() {
        return this.persona;
    }

    /**
     * Setter for property persona.
     * @param persona New value of property persona.
     */
    public void setPersona(Personal persona) {
        this.persona = persona;
    }
    /**
     * Holds value of property titulo.
     */
    private Categoria titulo;

    /**
     * Getter for property titulo.
     * @return Value of property titulo.
     */
    public Categoria getTitulo() {
        return this.titulo;
    }

    /**
     * Setter for property titulo.
     * @param titulo New value of property titulo.
     */
    public void setTitulo(Categoria titulo) {
        this.titulo = titulo;
    }
    /**
     * Holds value of property asistente.
     */
    private Contacto asistente;

    /**
     * Getter for property asistente.
     * @return Value of property asistente.
     */
    public Contacto getAsistente() {
        return this.asistente;
    }

    /**
     * Setter for property asistente.
     * @param asistente New value of property asistente.
     */
    public void setAsistente(Contacto asistente) {
        this.asistente = asistente;
    }
    /**
     * Holds value of property ultimaModificacion.
     */
    private java.util.Date ultimaModificacion;

    /**
     * Getter for property ultimaModificacion.
     * @return Value of property ultimaModificacion.
     */
    public java.util.Date getUltimaModificacion() {
        return this.ultimaModificacion;
    }

    /**
     * Setter for property ultimaModificacion.
     * @param ultimaModificacion New value of property ultimaModificacion.
     */
    public void setUltimaModificacion(java.util.Date ultimaModificacion) {
        if (ultimaModificacion==null || ultimaModificacion instanceof LocalDate)
            this.ultimaModificacion = ultimaModificacion;
        else this.ultimaModificacion = new LocalDate(ultimaModificacion);
    }

    /**
     * Holds value of property fechaCreacion.
     */
    private java.util.Date fechaCreacion;

    /**
     * Getter for property fechaCreacion.
     * @return Value of property fechaCreacion.
     */
    public java.util.Date getFechaCreacion() {
        return this.fechaCreacion;
    }

    /**
     * Setter for property fechaCreacion.
     * @param fechaCreacion New value of property fechaCreacion.
     */
    public void setFechaCreacion(java.util.Date fechaCreacion) {
        if (fechaCreacion==null || fechaCreacion instanceof LocalDate)
            this.fechaCreacion = fechaCreacion;
        else this.fechaCreacion = new LocalDate(fechaCreacion);
    }

    /**
     * Holds value of property contactoUsuario.
     */
    private Usuario contactoUsuario;

    /**
     * Getter for property contactoUsuario.
     * @return Value of property contactoUsuario.
     */
    public Usuario getContactoUsuario() {
        return this.contactoUsuario;
    }

    /**
     * Setter for property contactoUsuario.
     * @param contactoUsuario New value of property contactoUsuario.
     */
    public void setContactoUsuario(Usuario contactoUsuario) {
        this.contactoUsuario = contactoUsuario;
    }

    /**
     * Holds value of property esActivo.
     */
    private boolean esActivo;

    /**
     * Getter for property esActivo.
     * @return Value of property esActivo.
     */
    public boolean getEsActivo() {
        return this.esActivo;
    }

    /**
     * Setter for property contactoUsuario.
     * @param esActivo New value of property esActivo.
     */
    public void setEsActivo(boolean esActivo) {
        this.esActivo = esActivo;
    }

    public String toString() {
        return "<Contacto id='C" + this.id +
      //idContacto
        ((cuenta==null) ? "" : "\" cuenta =\"C" + cuenta.getId()) +

      //oportunidades
      "\" nombre =\"" + nombre +
      "\" apellido =\"" + apellido +
      "\" correoE =\"" + correoE +
      "\" direccionCorreo =\"" + direccionCorreo +
      "\" direccion =\"" + direccion +
      "\" telefonoHabitacion =\"" + telefonoHabitacion +
      "\" telefonoMovil =\"" + telefonoMovil +
      "\" telefonoFax =\"" + telefonoFax +
      "\" fechaNacimiento =\"" + fechaNacimiento +
      "\" lugarNacimiento =\"" + lugarNacimiento +
      "\" esCliente =\"" + esCliente +
        ((persona==null) ? "" : "\" persona =\"C" + persona.getId()) +

        ((titulo==null) ? "" : "\" titulo =\"C" + titulo.getId()) +

        ((asistente==null) ? "" : "\" asistente =\"C" + asistente.getId()) +

      "\" ultimaModificacion =\"" + ultimaModificacion +
      "\" fechaCreacion =\"" + fechaCreacion +
        ((contactoUsuario==null) ? "" : "\" contactoUsuario =\"C" + contactoUsuario.getId()) +


        "'/>";
    }

}